package system

import (
	"context"

	genSysCompany "admin_template/bff/admin/hertz_gen/system/sys_company"
	"admin_template/bff/admin/internal/service"
	"github.com/cloudwego/hertz/pkg/app"
)

type CompanyRepo interface {
	service.Face
}

type CompanyService struct {
	*Service
}

func NewCompanyService(s *Service) *CompanyService {
	return &CompanyService{s}
}

// Add .
// @router /v1/system/company [POST]
func (s *CompanyService) Add(ctx context.Context, c *app.RequestContext) {
	var req genSysCompany.AddRequest
	s.AddFunc(s.companyRepo, &req, "companyRepo", "公司已存在", ctx, c)
}

// UpdateInfo .
// @router /v1/system/company [PUT]
func (s *CompanyService) UpdateInfo(ctx context.Context, c *app.RequestContext) {
	var req genSysCompany.UpdateRequest
	s.UpdateInfoFunc(s.companyRepo, &req, "companyRepo", "公司已存在", ctx, c)

}

// Del .
// @router /v1/system/company [DELETE]
func (s *CompanyService) Del(ctx context.Context, c *app.RequestContext) {
	s.DelFunc(s.companyRepo, "companyRepo", ctx, c)
}

// UpdateState .
// @router /v1/system/company/state [PUT]
func (s *CompanyService) UpdateState(ctx context.Context, c *app.RequestContext) {
	s.UpdateStateFunc(s.companyRepo, "companyRepo", ctx, c)
}

// List .
// @router /v1/system/company [GET]
func (s *CompanyService) List(ctx context.Context, c *app.RequestContext) {
	var req genSysCompany.ListRequest
	s.ListFunc(s.companyRepo, &req, "companyRepo", ctx, c)

}

// All .
// @router /v1/system/company/all [GET]
func (s *CompanyService) All(ctx context.Context, c *app.RequestContext) {
	var req genSysCompany.AllRequest
	s.AllFunc(s.companyRepo, &req, "companyRepo", ctx, c)
}
